﻿<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>HelloWorld</title>
    <base href="./" />
    <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
    <link href="css/app.css" rel="stylesheet" />
    <link href="HelloWorld.styles.css" rel="stylesheet" />
    <link rel="icon" type="image/x-icon" href="favicon.png">

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="HelloWorld Sample">
    <meta name="twitter:image" content="https://https://nkast.github.io/Aether.Physics2D/wasm/HelloWorld/screenshot.png">
</head>

<body>

    <div id="app">
        <div id="loading" style="display: table-cell; margin: auto; width:100vw; height:100vh; vertical-align: middle; background: #ffcc10;">
            <div style="display: block; margin: auto; width: 9em; color: white;font-family: 'Segoe UI', sans-serif;">
            <div style="text-align: center; font-size: 0.85em;">Made with<br/><a href="https://github.com/kniEngine/kni"><img src="kni.png" border="0" alt="Kni"></a></div>
            <div style="text-align: center; font-size: 1.8em;">loading&nbsp;<marquee style="width:0.9em; vertical-align: bottom;">.&nbsp;.&nbsp;.&nbsp;&nbsp;&nbsp;</marquee></div>
        </div>
    </div>

    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="" class="reload">Reload</a>
        <a class="dismiss">?</a>
    </div>

    <script src="_framework/blazor.webassembly.js" autostart="false"></script>
    <script type="module">
        import { BrotliDecode } from './js/decode.min.js';
        // Set this to enable Brotli (.br) decompression on static webServers
        // that don't support content compression and http://.
        var enableBrotliDecompression = true;
        Blazor.start({
            loadBootResource: function (type, name, defaultUri, integrity)
            {
                if (enableBrotliDecompression === true && type !== 'dotnetjs' && location.hostname !== 'localhost')
                {
                    return (async function()
                    {
                        const response = await fetch(defaultUri + '.br', { cache: 'no-cache' });
                        if (!response.ok)
                            throw new Error(response.statusText);
                        const originalResponseBuffer = await response.arrayBuffer();
                        const originalResponseArray = new Int8Array(originalResponseBuffer);
                        const contentType = (type === 'dotnetwasm')
                                          ? 'application/wasm'
                                          : 'application/octet-stream';
                        const decompressedResponseArray = BrotliDecode(originalResponseArray);
                        return new Response(decompressedResponseArray,
                                            { headers: { 'content-type': contentType }
                                   });
                    })();
                }
            }
        });
    </script>

    <script src="_content/nkast.Wasm.Dom/js/JSObject.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Dom/js/Window.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Dom/js/Document.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Dom/js/Navigator.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Dom/js/Gamepad.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Dom/js/Media.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.XHR/js/XHR.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Canvas/js/Canvas.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Canvas/js/CanvasGLContext.8.0.1.js"></script>
    <script src="_content/nkast.Wasm.Audio/js/Audio.8.0.1.js"></script>

    <script>
        function tickJS()
        {
            window.theInstance.invokeMethod('TickDotNet');
            window.requestAnimationFrame(tickJS);
        }

        window.initRenderJS = (instance) =>
        {
            window.theInstance = instance;

            // set initial canvas size
            var canvas = document.getElementById('theCanvas');
            var holder = document.getElementById('canvasHolder');
            canvas.width = holder.clientWidth;
            canvas.height = holder.clientHeight;
            // disable context menu on right click
            canvas.addEventListener("contextmenu", e => e.preventDefault());
            
            // begin game loop
            window.requestAnimationFrame(tickJS);
        };

        window.onkeydown = function(event)
        {
            // Prevent Arrows Keys and Spacebar scrolling the outer page
            // when running inside an iframe. e.g: itch.io embedding.
            if ([32, 37, 38, 39, 40].indexOf(event.keyCode) > -1)
                event.preventDefault();
        };
        window.onmousewheel = function(event)
        {
            // Prevent Mousewheel scrolling the outer page
            // when running inside an iframe. e.g: itch.io embedding.
            event.preventDefault();
        };
    </script>
</body>

</html>
